/*
 * RenameButtonListener.java
 * Copyright (C) 2007 Ezequiel Turovetzky
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
package ar.com.botonera.gui.common.listeners;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import ar.com.botonera.Application;
import ar.com.botonera.config.BotoneraManager;
import ar.com.botonera.config.Configurator;
import ar.com.botonera.gui.MainWindow;
import ar.com.botonera.gui.SoundButton;
import ar.com.botonera.gui.common.Messenger;
import ar.com.botonera.gui.dialog.RenameDialog;
import ar.com.botonera.gui.menu.contextual.ContextualMenu;

/**
 * <code>ActionListener</code> disparado cuando se presiona
 * aceptar el cambio de nombre de un bot&oacute;n en el di&aacute;logo
 * correspondiente a dicha tarea.
 * <br>
 * Este listener se encarga de cambiar el nombre del componente de la botonera
 * y de modificar el archivo de configuraci&oacute;n para que al levantar
 * la aplicaci&oacute;n nuevamente los cambios surgan efecto.
 * @author <a href="mailto:tezequiel@gmail.com">Ezequiel Turovetzky</a>
 * @version 1.0
 *
 */
public class RenameButtonListener implements ActionListener {

    //~ Constructors -----------------------------------------------------------

    /**
     * Crea una nueva instancia de esta clase.
     */
    public RenameButtonListener() {
    }

    //~ Methods ----------------------------------------------------------------

    /**
     * Realiza el cambio del nombre del bot&oacute;n sobre el cual se hizo
     * el click derecho con el mouse y se seleccion&oacute; del men&uacute; contextual
     * la opci&oacute;n <i>Renombrar</i>.
     * <br>Este m&eacute;todo realiza los siguientes pasos:
     * <ol>
     * <li>Obtiene el bot&oacute;n al cual cambiar el nombre</li>
     * <li>Obtiene el nuevo nombre para el bot&oacute;n</li>
     * <li>Cambia el nombre del componente</li>
     * <li>Modifica el archivo de configuraci&oacute;n</lI>
     * <li>Cierra el di&aacute;logo</li>
     * </ol>
     */
    @Override
    public void actionPerformed(ActionEvent e) {

        MainWindow window = Application.getInstance().getWindow();
        ContextualMenu menu = window.getBotonera().getContextualMenu();
        SoundButton clickedButton = menu.getClickedButton();
        RenameDialog dialog = menu.getRenameItem().getRenameDialog();
        String newName = dialog.getNewNameTextField().getText();

        if(window.getBotonera().containsButtonLabel(newName)) {
    		BotoneraManager bm = BotoneraManager.getInstance();
    		String title = bm.get("ar.com.botonera.label.exists.title");
    		String message = bm.get("ar.com.botonera.label.exists.message");
    		Messenger.showErrorMessage(title, message);
        } else {
        	Application.getLogger().debug("Renombrando boton: " + clickedButton.getText() + " a " + newName);
        	Configurator.getInstance().getConfiguration().changeLabel(clickedButton.getText(), newName);
        	clickedButton.setText(newName);
        }

        dialog.setVisible(false);
        dialog.dispose();
    }
}
